<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <!-- 导入页面的基本样式 -->
    <link rel="stylesheet" href="./css/search.css" />
    <!-- 导入 jQuery -->
    <script src="./lib/jquery.js"></script>
    <script src="./lib/template-web.js"></script>
  </head>
  <body>
    <div class="container">
      <!-- Logo -->
      <img src="./images/taobao_logo.png" alt="" class="logo" />

      <div class="box">
        <!-- tab 栏 -->
        <div class="tabs">
          <div class="tab-active">宝贝</div>
          <div>店铺</div>
        </div>
        <!-- 搜索区域（搜索框和搜索按钮） -->
        <div class="search-box">
          <input
            type="text"
            class="ipt"
            placeholder="请输入要搜索的内容"
          /><button class="btnSearch">搜索</button>
        </div>
        <!-- 搜索建议列表 -->
        <div id="suggest-list"></div>
      </div>
    </div>

    <!-- 定义模板结构 -->
    <script type="text/html" id="tpl-suggestList">
      {{each result}}
      <div class="suggest-item">{{$value[0]}}</div>
      {{/each}}
    </script>

    <script>
      // 定义一个缓存对象
      let cachObj = {};

      var timer = null; // 1. 防抖动的 timer
      function debounceSearch(kw) {
        // 2. 定义防抖的函数
        timer = setTimeout(function () {
          // 发起 JSONP 请求
          getKeyWords(kw);
        }, 500);
      }

      // 给input框添加keyup事件
      $(".ipt").on("keyup", function () {
        clearTimeout(timer);
        // 获取输入内容
        let keyWords = $(this).val().trim();
        // 判断输入内容是否为空
        if (keyWords.length <= 0) return $("#suggest-list").empty().hide();
        // console.log(keyWords);
        // 优先从缓存里获取搜索建议
        if(cachObj[keyWords])return render(cachObj[keyWords])
        // getKeyWords(keyWords);
        debounceSearch(keyWords);

  
      });

      // 请求接口数据
      function getKeyWords(kw) {
        $.ajax({
          url: "https://suggest.taobao.com/sug?q=" + kw,
          dataType: "jsonp",
          success: function (res) {
            console.log(res);
            render(res);
          },
        });
      }

      // 渲染UI结构
      function render(res) {
        if (res.length <= 0) {
          return $("#suggest-list").empty().hide();
        }
        const html = template("tpl-suggestList", res);
        $("#suggest-list").html(html).show();

        // 将搜索的结果渲染到缓存对象中
        let k = $(".ipt").val().trim();
        cachObj[k]=res
      }
    </script>
  </body>
</html>
